home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Visual Basic Toolbox
/
Visual Basic Toolbox (P.I.E.)(1996).ISO
/
menus
/
vbmenu
/
menubmps.txt
< prev
Wrap
Text File
|
1991-09-06
|
5KB
|
175 lines
DefInt A-Z
'Window API Function Declarations
'
Declare Function GetMenu% Lib "user" (ByVal hwnd%)
Declare Function GetSubMenu% Lib "user" (ByVal hMenu%, ByVal nPos%)
Declare Function GetMenuItemID% Lib "user" (ByVal hMenu%, ByVal nPos%)
Declare Function ModifyMenu% Lib "user" (ByVal hMenu%, ByVal nPosition%, ByVal wFlags%, ByVal wIDNewItem%, ByVal lpNewItem&)
Declare Function SetMenuItemBitmaps% Lib "user" (ByVal hMenu%, ByVal nPosition%, ByVal wFlags%, ByVal hBitmapUnchecked%, ByVal hBitmapChecked%)
Declare Function TrackPopupMenu Lib "user" (ByVal hMenu, ByVal r1, ByVal X, ByVal Y, ByVal r2, ByVal hwnd, ByVal r3&)
Declare Function GetSystemMenu Lib "user" (ByVal hwnd%, ByVal revert%) As Integer
Const MF_BITMAP = &H4
Const CLR_MENUBAR = &H80000004
Const TRUE = -1, FALSE = 0
Dim TextItems$(4), LastSelection%, CurrentText%, hMenu%
Sub Form_Load ()
'* Obtain handle to the Forms top level menu
hMenu% = GetMenu(hwnd)
Static_Bitmaps_To_Menus
'* Initial String with text displayed when menus are selected.
'* (Just so something happens when a menu is selected.)
TextItems$(0) = "Writing Tools"
TextItems$(1) = "Fonts"
TextItems$(2) = "Books/Notes"
TextItems$(3) = "Printers"
TextItems$(4) = "Computers"
'* Set "Dynamic" menus submenus initial Menu text values
'* to Fontname + Fontsize of each menu item
For I% = 0 To 4
MSubMenu(I%).Caption = picture3(I%).FontName + Str$(picture3(I%).FontSize) + " Pnt"
Next I%
End Sub
Sub SubMenu_Click (Index As Integer)
Static LastSelection%
'* Set text to that of selected menu item and
'* display the new text
CurrentText% = Index
Form_Paint
'* Uncheck last selected item and check seledted item
SubMenu(LastSelection%).Checked = FALSE 'Check selected menu
SubMenu(Index).Checked = TRUE 'UnCheck last selected menu
LastSelection% = Index 'Save current selection
End Sub
Sub MSubMenu_Click (Index As Integer)
Static LastSelection%
'* Reset forms FontSize to selected fontsize
'* and redisplay current text
FontSize = picture3(Index).FontSize
Form_Paint
'* Uncheck last selected item and check selected item
MSubMenu(LastSelection%).Checked = FALSE
MSubMenu(Index).Checked = TRUE
LastSelection% = Index
End Sub
Sub Create_Dynamic_Menu_Bitmaps ()
For I% = 0 To 4
'* Set the width and height of the Picture controls
'* based on their corresponding Menu items caption,
'* and the Picture controls Font and FontSize.
'* DoEvents() is neccessary to make new dimension
'* values to take affect prior to exiting this Sub.
picture3(I%).Width = picture3(I%).TextWidth(MSubMenu(I%).Caption)
picture3(I%).Height = picture3(I%).TextHeight(MSubMenu(I%).Caption)
X% = DoEvents()
'* Set Backcolor of Picture control to that of the
'* current system Menu Bar color, so Dynamic bitmaps
'* will appear as normal menu items when menu bar
'* color is changed via the control panel
picture3(I%).BackColor = CLR_MENUBAR
'* Print Text onto Picture control. This text will
'* become the bitmap.
picture3(I%).Print MSubMenu(I%).Caption
Next I%
'* Obtain handle Second submenu
hSubMenu% = GetSubMenu(hMenu%, 1)
'* - Set picture controls backgroup picture (Bitmap) to its Image.
'* Can't use the Image bitmap directly for some reason.
'* - Get ID of sub menu
'* - Replace menu text with bitmap from corresponding picture control
'* - Replace bitmap for menu check mark with custom check mark bitmap
For I% = 0 To 4
picture3(I%).Picture = picture3(I%).Image
menuId% = GetMenuItemID(hSubMenu%, I%)
X% = ModifyMenu(hMenu%, menuId%, MF_BITMAP, menuId%, CLng(picture3(I%).Picture))
X% = SetMenuItemBitmaps(hMenu%, menuId%, 0, 0, CLng(picture2.Picture))
Next I%
End Sub
Sub Form_Paint ()
Cls
Print TextItems$(CurrentText%)
End Sub
Sub CreateDynamic_Click ()
CreateDynamic.enabled = FALSE
Create_Dynamic_Menu_Bitmaps
End Sub
Sub Static_Bitmaps_To_Menus ()
'* Obtain handle to first submenu
hSubMenu% = GetSubMenu(hMenu%, 0)
'* - Get ID of each sub menu
'* - Replace menu text with bitmap from corresponding picture control
'* - Replace bitmap for menu check mark with custom check mark bitmap
For I% = 0 To 4
menuId% = GetMenuItemID(hSubMenu%, I%)
X% = ModifyMenu(hMenu%, menuId%, MF_BITMAP, menuId%, CLng(picture1(I%).Picture))
X% = SetMenuItemBitmaps(hMenu%, menuId%, 0, 0, CLng(picture2.Picture))
Next I%
SubMenu(1).enabled = 0
hMenu% = GetSystemMenu(hwnd, 0)
menuId% = &HF120
X% = ModifyMenu(hMenu%, menuId%, MF_BITMAP, menuId%, CLng(picture3(0).Picture))
End Sub
Sub Form_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single)
ScaleMode = 3
InPixels = ScaleWidth
ScaleMode = 1
IX = (X + Left) \ (ScaleWidth \ InPixels)
IY = (Y + (Top + (Height - ScaleHeight - (Width - ScaleWidth)))) \ (ScaleWidth \ InPixels)
R = TrackPopupMenu(GetSubMenu(hMenu%, Button - 1), 0, IX, IY, 0, hwnd, 0)
End Sub